//解题思路：
//找到字符里的空格，记为pos，让prev为逆置的起始位置
//逆置prev到pos的数据，然后让prev为pos的下一个位置（prev = pos + 1），之后pos再从prev的位置开始往后找空格
//注意事项： 需要自己实现逆置函数，std库里的逆置函数reverse使用起来不符合情况



class Solution
{
public:

    static void my_reverse(string& s, int pos, int npos)
    {
        if (npos == string::npos - 1)//虽然在外部循环中，结束的条件是pos != string::npos，但是pos在循环内的最后一次find会取到npos，即pos的位置从最后一个空格的后一个位开始寻找空格并且没有找到空格
                                     //即：直接将最后一个空格位置的后面全部内容逆置即可
            npos = s.length() - 1;
        while (pos < npos)
        {
            swap(s[pos], s[npos]);
            pos++;
            npos--;
        }
    }

    string reverseWords(string s)
    {

        int prev = 0;
        int pos = 0;
        while (pos != string::npos)
        {
            pos = prev;
            pos = s.find(" ", prev);

            my_reverse(s, prev, pos - 1);

            prev = pos + 1;
        }

        return s;
    }
};